1. Field of Invention
The present invention pertains to the field of computer systems. More particularly, this invention relates to flexible allocation of a resource in a computer system.
2. Art Background
A computer system typically includes resources that are shared among multiple users. An example of a shared resource is a shared physical memory. Examples of a shared physical memory include main memory, persistent memory including mass storage devices, and information stores, etc. Another example of a shared resource is a communication link. Yet another example of a shared resource is a processor.
A shared resource usually has a limited capacity or limited capability with respect to the needs of the potential users of the shared resource. For example, a physical memory usually has a limited storage capacity. A communication link typically has a limited bandwidth. A processor usually has a limited instruction execution throughput. As a consequence, computer systems commonly implement methods for allocating the capacity or capability of a shared resource among the users of the shared resource.
One prior method for allocating a shared resource is to employ static partitioning. For example, static partitioning may be applied to a physical memory having a storage capacity of C bytes by allocating C/n bytes to each of n potential users of the physical memory. Unfortunately, such static partitioning usually limits each user to C/n bytes even when a only a small percentage of the potential users actually use physical memory at any given time. Such partitioning commonly results in severe underutilization of the shared resource.
Another prior method for allocating a shared resource is to allocate a portion of the shared resource to each requesting user on a first-come-first-served basis. For a physical memory having a storage capacity of C bytes, for example, C/10 bytes may be allocated to each requesting user. Unfortunately, such a method usually exhausts the capacity of the shared resource after the first 10 users, thereby locking subsequent users out of the shared resource.